﻿// Decompiled with JetBrains decompiler
// Type: Netick.INetickEntity
// Assembly: Netick, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// MVID: 6726ECA1-C773-4CF7-8952-E81B30D93B52
// Assembly location: D:\WorkSpaceDemo\UPM\NetickForUnity\Netick\Runtime\Netick.dll
// XML documentation location: D:\WorkSpaceDemo\UPM\NetickForUnity\Netick\Runtime\Netick.xml

using System.Numerics;

#nullable disable
namespace Netick;

/// <summary>
/// This interface is used to integrate Netick with a game engine entity.
/// </summary>
public interface INetickEntity
{
  NetickEngine Engine { get; }

  Entity Entity { get; }

  Vector3 WorldPosition { get; }

  INetickNetworkScript[] NetworkScripts { get; }

  INetickScript[] AllScripts { get; }

  int AoILayer { get; }

  BroadPhaseFilter BroadPhaseFilter { get; }

  bool NarrowPhaseFilter { get; }

  bool AddToNetworkLoop { get; }

  Relevancy PredictionMode { get; }

  bool UseSAP { get; }

  /// <summary>
  /// Used to initialize the user entity and assign Engine and Entity.
  /// </summary>
  /// <param name="netickEngine"></param>
  /// <param name="entity"></param>
  void Initialize(NetickEngine netickEngine, Entity entity);

  void NetworkAwake();

  void NetworkRegister();

  void NetworkUnregister();
}
